package com.android.support.lib.universal.sdk.qq;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;

import com.android.support.lib.universal.sdk.qq.listener.BaseUIListener;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzoneShare;
import com.tencent.tauth.Tencent;

/**
 * 分享，不需要 QQ授权登录
 *
 * @author Administrator
 *
 */
public class QqShare {
	private static final String SHARE_TO_QZONE_TYPE_IMAGE_TEXT = null;

	/**
	 * QQ消息分享
	 *
	 * @param activity
	 * @param mTencent
	 * @param title
	 *            要分享的标题
	 * @param paper
	 *            要分享的摘要
	 * @param url
	 *            要分享的链接
	 * @param imgUrl
	 *            要分享的网络图片
	 * @param appName
	 *            手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
	 * @param bool
	 *            是否分享到QQ空间
	 */
	public static void onClickShareMsg(Activity activity, Tencent mTencent,
									   String title, String paper, String url, String imgUrl,
									   String appName, Boolean bool) {
		final Bundle params = new Bundle();
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
				QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
		params.putString(QQShare.SHARE_TO_QQ_TITLE, title);// 要分享的标题
		params.putString(QQShare.SHARE_TO_QQ_SUMMARY, paper);// 要分享的摘要
		params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url);// 要分享的链接
		params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, imgUrl);// 要分享的网络图片
		if (appName != null && !appName.equals("")) {
			params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName);// 手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
		}
		/**
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN 分享时自动打开分享到QZone的对话框。
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE，分享时隐藏分享到QZone按钮(默认隐藏)
		 *
		 */
		if (bool) {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
		} else {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
		}
		mTencent.shareToQQ(activity, params, new BaseUIListener(activity));
	}

	/**
	 * 分享纯图片
	 *
	 * @param activity
	 * @param mTencent
	 * @param path
	 *            需要分享的本地图片路径。
	 * @param appName
	 *            手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
	 *
	 * @param bool
	 *            是否分享到QQ空间
	 */
	public static void onClickShareImg(Activity activity, Tencent mTencent,
									   String path, String appName, Boolean bool) {
		Bundle params = new Bundle();
		params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, path);// 需要分享的本地图片路径。
		if (appName != null && !appName.equals("")) {
			params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName);// 手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
		}
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
				QQShare.SHARE_TO_QQ_TYPE_IMAGE);
		/**
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN 分享时自动打开分享到QZone的对话框。
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE，分享时隐藏分享到QZone按钮(默认隐藏)
		 *
		 */
		if (bool) {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
		} else {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
		}

		mTencent.shareToQQ(activity, params, new BaseUIListener(activity));
	}

	/**
	 * 分享音乐到QQ
	 *
	 * @param activity
	 * @param mTencent
	 * @param title
	 *            要分享的标题
	 * @param paper
	 *            要分享的摘要
	 * @param url
	 *            要分享的链接
	 * @param imgUrl
	 *            要分享的网络图片
	 * @param music
	 *            要分享的音乐链接
	 * @param appName
	 *            手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
	 * @param bool
	 *            是否分享到QQ空间
	 */
	public static void onClickAudioShareMusic(Activity activity,
											  Tencent mTencent, String title, String paper, String url,
											  String imgUrl, String music, String appName, Boolean bool) {
		final Bundle params = new Bundle();
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
				QQShare.SHARE_TO_QQ_TYPE_AUDIO);
		params.putString(QQShare.SHARE_TO_QQ_TITLE, title);// 要分享的标题
		params.putString(QQShare.SHARE_TO_QQ_SUMMARY, paper);// 要分享的摘要
		params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url);// 要分享的链接
		params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, imgUrl);// 要分享的网络图片
		params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, music);// 要分享的音乐链接
		if (appName != null && !appName.equals("")) {
			params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName);// 手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
		}
		/**
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN 分享时自动打开分享到QZone的对话框。
		 * QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE，分享时隐藏分享到QZone按钮(默认隐藏)
		 *
		 */
		if (bool) {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
		} else {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
		}
		mTencent.shareToQQ(activity, params, new BaseUIListener(activity));
	}

	/**
	 * 分享应用，前提app必须在应用宝上线
	 *
	 * @param activity
	 * @param mTencent
	 * @param bool
	 *            是否分享到QQ空间
	 */
	public static void onClickAppShareApp(Activity activity, Tencent mTencent,
										  Boolean bool) {
		final Bundle params = new Bundle();
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
				QQShare.SHARE_TO_QQ_TYPE_APP);
		params.putString(QQShare.SHARE_TO_QQ_TITLE, "游戏热");
		params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "大家快来下载！");
		params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,
				"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");// 要分享的网络图片
		params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "游戏热");// 手Q客户端顶部，替换“返回”按钮文字，如果为空，用返回代替
		if (bool) {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
		} else {
			params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,
					QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);
		}
		mTencent.shareToQQ(activity, params, new BaseUIListener(activity));
	}

	/**
	 * 分享到QQ空间
	 *
	 * @param activity
	 * @param mTencent
	 * @param title
	 *            必填,标题
	 * @param paper
	 *            选填,摘要
	 * @param url
	 *            必填,分享链接(点击之后的网络页面跳转链接)
	 * @param arraylist
	 *            (网络图片数组)
	 *            分享url图片数组。QZone接口暂不支持发送多张图片的能力，若传入多张图片，则会自动选入第一张图片作为预览图。
	 *            多图的能力将会在以后支持。
	 */
	public static void shareToQzone(Activity activity, Tencent mTencent,
									String title, String paper, String url, ArrayList<String> arraylist) {
		Bundle params = new Bundle();
		params.putString(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
				SHARE_TO_QZONE_TYPE_IMAGE_TEXT);

		params.putString(QzoneShare.SHARE_TO_QQ_TITLE, title);// 必填,标题
		params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, paper);// 选填,摘要
		params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, url);// 必填,链接

		// 注意:QZone接口暂不支持发送多张图片的能力，若传入多张图片，则会自动选入第一张图片作为预览图。多图的能力将会在以后支持。

		params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, arraylist);
		mTencent.shareToQzone(activity, params, new BaseUIListener(activity));
	}
}
